const { PrismaClient } = require('@prisma/client');

const prisma = new PrismaClient();

async function debugTaskCreation() {
  try {
    console.log('=== 调试任务创建问题 ===\n');
    
    // 1. 检查用户
    console.log('1. 检查用户表...');
    const users = await prisma.user.findMany();
    console.log('用户数据:', users);
    
    // 2. 检查用户ID类型
    const user = await prisma.user.findUnique({ where: { id: 1 } });
    console.log('用户ID为1的用户:', user);
    console.log('用户ID类型:', typeof user?.id);
    
    // 3. 尝试不同的创建方式
    console.log('\n2. 尝试不同的任务创建方式...');
    
    // 方式1：直接使用数字1
    try {
      console.log('方式1：直接使用数字1');
      const task1 = await prisma.extractionTask.create({
        data: {
          name: '测试任务1',
          keywords: '["测试1"]',
          maxCount: 5,
          createdBy: 1
        }
      });
      console.log('✅ 方式1成功:', task1.id);
      await prisma.extractionTask.delete({ where: { id: task1.id } });
    } catch (error) {
      console.log('❌ 方式1失败:', error.message);
    }
    
    // 方式2：使用parseInt转换
    try {
      console.log('方式2：使用parseInt转换');
      const userId = parseInt('1');
      const task2 = await prisma.extractionTask.create({
        data: {
          name: '测试任务2',
          keywords: '["测试2"]',
          maxCount: 5,
          createdBy: userId
        }
      });
      console.log('✅ 方式2成功:', task2.id);
      await prisma.extractionTask.delete({ where: { id: task2.id } });
    } catch (error) {
      console.log('❌ 方式2失败:', error.message);
    }
    
    // 方式3：使用Number转换
    try {
      console.log('方式3：使用Number转换');
      const userId = Number(1);
      const task3 = await prisma.extractionTask.create({
        data: {
          name: '测试任务3',
          keywords: '["测试3"]',
          maxCount: 5,
          createdBy: userId
        }
      });
      console.log('✅ 方式3成功:', task3.id);
      await prisma.extractionTask.delete({ where: { id: task3.id } });
    } catch (error) {
      console.log('❌ 方式3失败:', error.message);
    }
    
    // 方式4：模拟API中的完整数据
    try {
      console.log('方式4：模拟API中的完整数据');
      const task4 = await prisma.extractionTask.create({
        data: {
          name: '测试任务4',
          keywords: '["测试4"]',
          maxCount: parseInt('10'),
          isRecurring: Boolean(false),
          interval: null,
          createdBy: 1,
          nextRunAt: null
        },
        include: {
          creator: {
            select: {
              username: true
            }
          }
        }
      });
      console.log('✅ 方式4成功:', task4.id);
      await prisma.extractionTask.delete({ where: { id: task4.id } });
    } catch (error) {
      console.log('❌ 方式4失败:', error.message);
      console.log('完整错误:', error);
    }
    
    // 4. 检查现有任务
    console.log('\n3. 检查现有任务...');
    const existingTasks = await prisma.extractionTask.findMany({
      include: {
        creator: true
      }
    });
    console.log('现有任务数量:', existingTasks.length);
    existingTasks.forEach(task => {
      console.log(`任务${task.id}: ${task.name}, 创建者ID: ${task.createdBy} (类型: ${typeof task.createdBy})`);
    });
    
  } catch (error) {
    console.error('调试过程中出错:', error);
  } finally {
    await prisma.$disconnect();
  }
}

debugTaskCreation();
